Optional ক্লাসটি Java 8 থেকে java.util প্যাকেজে যুক্ত করা হয়েছে এবং এটি null মানের প্রাচীন সমস্যা সমাধানের জন্য ব্যবহৃত হয়। এটি মূলত একটি container object, যা null মান না থাকার সম্ভাবনা বা null মান থাকতে পারে এমন অবস্থার মধ্যে নিরাপত্তা প্রদান করে। Optional এর মাধ্যমে, আপনি এমন একটি মান গঠন করতে পারেন যা উপস্থিত (present) বা অনুপস্থিত (absent) হতে পারে।
এটি null এর পরিবর্তে ব্যবহার করা যায়, এবং null pointer exceptions (NPE) থেকে রক্ষা পেতে সাহায্য করে। Optional সাধারণত ফাংশনাল প্রোগ্রামিং এর মতো functional style কোড লেখার জন্য ব্যবহৃত হয়।
Optional ক্লাসের প্রধান মেথডসমূহ
1. isPresent()
isPresent() মেথডটি Optional অবজেক্টের মধ্যে একটি মান উপস্থিত কিনা তা পরীক্ষা করে। যদি মান উপস্থিত থাকে তবে এটি true রিটার্ন করে, আর যদি না থাকে তবে false রিটার্ন করে।
- Usage: আপনি যখন জানতে চান যে একটি
Optionalঅবজেক্টে কোনো মান রয়েছে কি না, তখন এই মেথডটি ব্যবহার করতে পারেন।
উদাহরণ:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optionalString = Optional.of("Hello, World!");
if (optionalString.isPresent()) {
System.out.println("The value is present: " + optionalString.get());
} else {
System.out.println("The value is not present.");
}
}
}
Output:
The value is present: Hello, World!
- ব্যাখ্যা:
isPresent()মেথডটি চেক করছে যেoptionalStringএর মধ্যে কোনো মান রয়েছে কিনা, এবং তারপরে সেই মানটিget()মেথডের মাধ্যমে প্রদর্শিত হয়েছে।
2. get()
get() মেথডটি Optional অবজেক্ট থেকে মানটি রিটার্ন করে যদি মানটি উপস্থিত থাকে। তবে, যদি Optional অবজেক্টে কোনো মান না থাকে, এটি NoSuchElementException থ্রো করবে।
- Usage:
get()শুধুমাত্র তখন ব্যবহার করা উচিত যখন আপনি নিশ্চিত হন যেOptionalঅবজেক্টে একটি মান আছে।
উদাহরণ:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optionalString = Optional.of("Hello, Java!");
// Directly retrieve the value from Optional
System.out.println("The value is: " + optionalString.get());
}
}
Output:
The value is: Hello, Java!
- ব্যাখ্যা: এখানে
optionalString.get()ব্যবহার করা হয়েছে মানটি সরাসরি পেতে, তবে এটি তখনই নিরাপদ যখনoptionalStringঅবশ্যই মান ধারণ করে।
3. orElse()
orElse() মেথডটি একটি বিকল্প মান প্রদান করে যদি Optional অবজেক্টে কোনো মান উপস্থিত না থাকে। এটি একটি fallback value হিসেবে কাজ করে এবং Optional অবজেক্টের মান না থাকলে তা রিটার্ন করে।
- Usage: যখন আপনি একটি
Optionalঅবজেক্টে একটি ডিফল্ট মান নির্ধারণ করতে চান, তখনorElse()মেথড ব্যবহার করা হয়।
উদাহরণ:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optionalString = Optional.empty();
// If the value is absent, provide a fallback value
String result = optionalString.orElse("Default Value");
System.out.println("The value is: " + result);
}
}
Output:
The value is: Default Value
- ব্যাখ্যা:
orElse()মেথডটিoptionalStringঅবজেক্টে মান না থাকলে "Default Value" রিটার্ন করেছে।
4. ifPresent()
ifPresent() মেথডটি একটি ল্যাম্বডা এক্সপ্রেশন বা Consumer গ্রহণ করে এবং শুধুমাত্র তখন কার্যকর হয় যখন Optional অবজেক্টে মান উপস্থিত থাকে। এটি null চেক করার জন্য খুবই কার্যকর।
- Usage: যখন আপনি শুধু তখনই কিছু করতে চান যদি
Optionalঅবজেক্টে মান থাকে, তখনifPresent()ব্যবহার করা হয়।
উদাহরণ:
import java.util.Optional;
public class OptionalExample {
public static void main(String[] args) {
Optional<String> optionalString = Optional.of("Hello, Optional!");
// Execute the lambda expression only if the value is present
optionalString.ifPresent(value -> System.out.println("The value is: " + value));
}
}
Output:
The value is: Hello, Optional!
- ব্যাখ্যা: এখানে
ifPresent()ব্যবহার করা হয়েছে যাতে শুধুমাত্র যখনoptionalStringএ একটি মান থাকে, তখনই ল্যাম্বডা এক্সপ্রেশন কার্যকর হয় এবং মানটি প্রিন্ট করা হয়।
Optional ক্লাসের অন্যান্য গুরুত্বপূর্ণ মেথডসমূহ:
isEmpty():isEmpty()মেথডটিisPresent()এর বিপরীত, অর্থাৎ এটি চেক করে যেOptionalঅবজেক্টে কোনো মান নেই।- Usage:
isEmpty()তখন ব্যবহার করুন যখন আপনি জানতে চানOptionalঅবজেক্টে কোনো মান নেই।
Optional<String> optionalString = Optional.empty(); if (optionalString.isEmpty()) { System.out.println("No value present"); }orElseGet():orElseGet()মেথডটি একটিSupplierগ্রহণ করে, যা একটি মান রিটার্ন করে যদিOptionalঅবজেক্টে কোনো মান না থাকে।- এটি
orElse()এর মতো, তবে এখানে আপনি একটি লম্বা অপারেশন বা দ্বিতীয় মান প্রদান করতে পারেন যা Optional অবজেক্টের মান অনুপস্থিত থাকলে কার্যকর হয়।
Optional<String> optionalString = Optional.empty(); String result = optionalString.orElseGet(() -> "Generated Fallback Value"); System.out.println(result); // Output: Generated Fallback Valuemap():map()মেথডটিOptionalঅবজেক্টের ভ্যালু মানে কোন ধরনের ট্রান্সফরমেশন (যেমন, ফাংশনাল প্রসেসিং) প্রয়োগ করার জন্য ব্যবহৃত হয়। যদি মান থাকে তবে এটি প্রভাবিত হবে, আর যদি না থাকে তবে কিছুই হবে না।
Optional<String> optionalString = Optional.of("hello"); Optional<String> transformedString = optionalString.map(s -> s.toUpperCase()); transformedString.ifPresent(System.out::println); // Output: HELLO
Optional একটি শক্তিশালী এবং নিরাপদ উপায় null মানের সাথে কাজ করার জন্য। এটি null pointer exceptions এড়ানোর জন্য উন্নত কৌশল প্রদান করে এবং ফাংশনাল প্রোগ্রামিং শৈলীতে কোড লেখার ক্ষেত্রে সাহায্য করে।
isPresent()এবংifPresent()ফাংশনগুলো null চেক করার জন্য ব্যবহৃত হয়।get()শুধুমাত্র তখন ব্যবহার করা উচিত যখন নিশ্চিত হন যে Optional এ মান উপস্থিত রয়েছে।orElse()এবংorElseGet()default value প্রদান করে যদি Optional খালি থাকে।
Optional মেথডগুলির মাধ্যমে আপনি নিরাপদ এবং কার্যকরভাবে null এর মোকাবেলা করতে পারেন।
Read more